return {
  {
    "nvim-treesitter/nvim-treesitter",
    -- dev = true,
    config = function()
      require("nvim-treesitter.configs").setup {
        parser_install_dir = vim.fn.stdpath('config'),
        indent = {
          enable = true,
        },
        incremental_selection = {
          enable = true,
          keymaps = {
            node_incremental = "<CR>",
            node_decremental = "<BS>",
          },
        },
        -- A list of parser names, or "all" (the five listed parsers should always be installed)
        ensure_installed = { "lua", "javascript" },

        -- Install parsers synchronously (only applied to `ensure_installed`)
        sync_install = false,

        -- Automatically install missing parsers when entering buffer
        -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
        auto_install = true,

        -- List of parsers to ignore installing (or "all")
        ignore_install = { 'org' },

        modules = {},

        ---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
        -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!

        highlight = {
          enable = true,


          -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
          -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
          -- the name of the parser)
          -- list of language that will be disabled
          -- disable = { "c", "rust" },
          -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
          disable = function(lang, buf)
            local max_filesize = 100 * 1024 -- 100 KB
            local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
            if ok and stats and stats.size > max_filesize then
              return true
            end
          end,

          -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
          -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
          -- Using this option may slow down your editor, and you may see some duplicate highlights.
          -- Instead of true it can also be a list of languages
          additional_vim_regex_highlighting = false,
        },
      }


      local parser_config = require "nvim-treesitter.parsers".get_parser_configs()
      -- Highlight @foo.bar as "Identifier" only in Lua files
      vim.api.nvim_set_hl(0, "@word.wxml", { link = "Identifier" })
      vim.treesitter.language.register('wxml', 'xml') -- the someft filetype will use the python parser and queries.
      -- parser_config.miniprogram = {
      --   install_info = {
      --     url = "file:///home/geek/repos/tree-sitter-hello", -- local path or git repo
      --     -- files = { "src/parser.c" },       -- note that some parsers also require src/scanner.c or src/scanner.cc
      --     -- optional entries:
      --     -- branch = "main",                  -- default branch in case of git repo if different from master
      --     generate_requires_npm = false,          -- if stand-alone parser without npm dependencies
      --     requires_generate_from_grammar = false, -- if folder contains pre-generated src/parser.c
      --   },
      --   filetype = "wxml",                        -- if filetype does not match the parser name
      -- }
      -- 开启代码折叠
      vim.wo.foldmethod = 'expr'
      vim.wo.foldexpr = 'nvim_treesitter#foldexpr()'
      -- 默认不折叠
      vim.wo.foldlevel = 99
    end
  },
  {
    "nvim-treesitter/playground",
    config = function()

    end
  }
}
